package com.zzs.team.Utils;

import com.google.gson.Gson;
import com.zzs.team.Entity.User;

import java.util.HashMap;
import java.util.Map;

public class UserInformation {
    public static Map getUserInformation(String encryptedData, String iv, String code){
        //map存放status和User对象userInfo
        Map map = new HashMap();
        Gson gson = new Gson();

        //登录凭证不能为空
        if (code == null || code.length() == 0) {
            map.put("status", 0);
            map.put("msg", "code 不能为空");
            return map;
        }
        //小程序唯一标识   (在微信小程序管理后台获取)
        String wxspAppid = "填入自己的小程序唯一标识";
        //小程序的 app secret (在微信小程序管理后台获取)
        String wxspSecret = "填入自己的小程序app secret";
        //授权（必填）
        String grant_type = "authorization_code";
        //////////////// 1、向微信服务器 使用登录凭证 code 获取 session_key 和 openid ////////////////
        //请求参数
        String params = "appid=" + wxspAppid + "&secret=" + wxspSecret + "&js_code=" + code + "&grant_type=" + grant_type;
        //发送请求
        String sr = HttpRequest.sendGet("https://api.weixin.qq.com/sns/jscode2session", params);


        //解析相应内容（转换成json对象）
        Map json = gson.fromJson(sr,HashMap.class);
        //JSONObject json = JSONObject.parseObject(sr);
        //获取会话密钥（session_key）
        String session_key = json.get("session_key").toString();
        //用户的唯一标识（openid）
        String openid = (String) json.get("openid");

        Map userInfoJSON;
        User userInfo= new User();
        //////////////// 2、对encryptedData加密数据进行AES解密 ////////////////
        try {
            String result = AesUtil.decrypt(encryptedData, session_key, iv, "UTF-8");
            if (null != result && result.length() > 0) {
                map.put("status", 1);
                map.put("msg", "解密成功");
                userInfoJSON = gson.fromJson(result,HashMap.class);
                userInfo.setOpenID((String) userInfoJSON.get("openId"));
                userInfo.setNickName((String)userInfoJSON.get("nickName"));
                userInfo.setAvatar((String)userInfoJSON.get("avatarUrl"));
            }else{
                map.put("status", 0);
                map.put("msg", "解密错误");
                return map;
            }
        } catch (Exception e) {
            e.printStackTrace();
            map.put("status", 0);
            map.put("msg", "解密失败");
            return map;
        }
        map.put("userInfo", userInfo);
        return map;

    }
}
